package {
	
	import br.com.damazzy.alterarSenha.AlterarSenhaView;
	import br.com.damazzy.util.TratamentoErros;
	import br.com.damazzy.vo.UsuarioVO;
	
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import mx.controls.Alert;
	import mx.events.CloseEvent;
	import mx.events.FlexEvent;
	import mx.managers.PopUpManager;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	
	public class AlterarSenha extends AlterarSenhaView {
		
		private var _idUsuario: String;
		
		public function AlterarSenha() {
			super();
			
			this.addEventListener(FlexEvent.CREATION_COMPLETE, init);
			
			include 'br/com/damazzy/util/RegistroVOs.as';
		}
		
		private function init(event: FlexEvent): void {
			
			btnAlterarSenha.addEventListener(MouseEvent.CLICK, alterarSenha);
			btnFechar.addEventListener(MouseEvent.CLICK, fechar);
			this.addEventListener(CloseEvent.CLOSE, fechar);
			
			rm.obter.addEventListener(ResultEvent.RESULT, resultObter);
			rm.obter.addEventListener(FaultEvent.FAULT, TratamentoErros.fault);
			rm.alterarSenha.addEventListener(ResultEvent.RESULT, resultAlterarSenha);
			rm.alterarSenha.addEventListener(FaultEvent.FAULT, TratamentoErros.fault);
			
			limparDados();
			
			obter();
		}
		
		private function obter(): void {
			var usuario: UsuarioVO = new UsuarioVO();
			usuario.idUsuario = _idUsuario;
			
			rm.obter(usuario);
		}
		
		private function resultObter(result: ResultEvent): void {
			var usuario: UsuarioVO = result.result.dados.vo;
			
			txtLogin.actualText = usuario.login;
			txtSenha.actualText = usuario.senha;
		}
		
		private function alterarSenha(event: MouseEvent): void {
			
			if (validarDados()) {
				
				if (txtSenha.text.length < 8) {
					Alert.show("A senha deve conter 8 caracteres.", "Erro!");
					return;
				}
				
				var novaVO: UsuarioVO = new UsuarioVO();
				novaVO.idUsuario = _idUsuario;
				novaVO.senha = txtSenha.text;
				rm.alterarSenha(novaVO);
			}
		}
		
		private function validarDados(): Boolean {
			
			var msg: String = "O campo ";
			var validacaoOk: Boolean = true;
			
			if (txtSenha.text == "") {
				msg += "Senha";
				validacaoOk = false;
			}
			
			msg += " é de preenchimento obrigatório.";
			
			if (!validacaoOk) {
				Alert.show(msg, "Erro!");
			}
			
			return validacaoOk;
		}
		
		private function resultAlterarSenha(result: ResultEvent): void {
			Alert.show("Senha alterada com sucesso.", "Aviso!");
			fechar();
		}
		
		private function fechar(event: Event = null): void {
			PopUpManager.removePopUp(this);
		}
		
		private function limparDados(): void {
			txtLogin.text = "";
			txtSenha.text = "";
		}
		
		public function set idUsuario(idUsuario: String): void {
			this._idUsuario = idUsuario;	
		}
	}
}